/**
 * Function 的实例方法apply会以给定的this值和数组提供的arguments调用该函数
 * @param {*} ctx 
 * @param {*} args 
 */
function myApply(ctx, args){
    const origionalFunc = this;
    const fnSymbol = Symbol('fn');

    ctx[fnSymbol] = origionalFunc;

    const result = args ? ctx[fnSymbol](...args) : ctx[fnSymbol]();

    delete ctx[fnSymbol];

    return result;
}